Przejdź do głównej zawartości

Jak połączyć się za pomocą Session Manager?

Minimalne kroki do połączenia

Agent SSM

Przygotuj instancję lub AMI z zainstalowanym agentem SSM lub użyj jednej z tej listy:

Ręczna instalacja agenta SSM na instancjach EC2 z systemem Linux

Przykład dla CentOS Stream:

#Zasób globalny:
sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm

#Region specyficzny: us-east-1
sudo dnf install -y https://s3.us-east-1.amazonaws.com/amazon-ssm-us-east-1/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl status amazon-ssm-agent
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent

Przykład dla Ubuntu 20.10:

sudo snap install amazon-ssm-agent --classic
sudo snap list amazon-ssm-agent
sudo snap start amazon-ssm-agent
sudo snap services amazon-ssm-agent

Więcej informacji:

Profil instancji IAM

Utwórz profil instancji IAM dla Systems Manager i przypisz rolę IAM do instancji (https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)

Tworzenie profilu instancji:

Ważne:

  • Gdy tworzysz role dla EC2, profil instancji jest tworzony automatycznie.
  • Jeśli tworzysz role za pomocą AWS CLI, profil instancji nie jest tworzony. Musisz go utworzyć ręcznie.

Jak to wygląda w AWS CLI?

Potrzebujesz polityki zaufania dla roli:

cat <<EOT >> Role-Trust-Policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOT

Następnie musisz utworzyć rolę z niezbędnymi politykami, profil instancji i przypisać rolę do profilu instancji:

aws iam create-role --role-name Role-SSM-instance --assume-role-policy-document file://Role-Trust-Policy.json
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore --role-name Role-SSM-instance

aws iam create-instance-profile --instance-profile-name SSM
aws iam add-role-to-instance-profile --role-name Role-SSM-instance --instance-profile-name Role-SSM-instance

Możesz zobaczyć wynik:

aws iam list-instance-profiles

Teraz możemy przypisać profil instancji IAM do instancji:

aws ec2 associate-iam-instance-profile --instance-id INSTANCE_ID --iam-instance-profile Name=SSM 

Więcej informacji:

Zezwolenie na ruch HTTPS w grupie zabezpieczeń

Grupa zabezpieczeń dodana do punktu końcowego VPC musi zezwalać na ruch przychodzący HTTPS (port 443) z zasobów w Twoim VPC, które komunikują się z usługą. W grupie zabezpieczeń dla EC2 nie musimy zezwalać na ruch HTTPS tylko po to, aby ustanowić połączenie z Session Manager.

Grupa zabezpieczeń musi zezwalać na ruch przychodzący HTTPS (port 443) z zasobów w Twoim VPC, które komunikują się z usługą.

Przykład dla AWS CLI:

aws ec2 authorize-security-group-ingress \
--group-id sg-ID-Security-Group \
--protocol tcp \
--port 443 \
--source-group sg-1a2b3c4d

Więcej informacji:

Łączenie się z instancją

Konsola zarządzania AWS

Aby rozpocząć sesję (konsola Amazon EC2)

  1. Otwórz konsolę Amazon EC2 na https://console.aws.amazon.com/ec2/.
  2. W panelu nawigacyjnym wybierz "Instancje".
  3. Wybierz instancję i kliknij "Połącz".
  4. Wybierz metodę połączenia "Session Manager".
  5. Kliknij "Połącz".

Więcej informacji:

Interfejs wiersza poleceń AWS

Musisz użyć tego polecenia z lokalnej instancji lub CloudShell:

aws ssm start-session --target instance-id

Więcej informacji:

Włączanie logowania sesji do S3 i CloudWatch z szyfrowaniem

Możesz rejestrować polecenia i szczegóły sesji w koszu Amazon S3 lub grupie dzienników CloudWatch Logs. Skonfiguruj sesje na stronie preferencji Session Manager dla logowania do CloudWatch lub S3.

Ważne:

  • Każde polecenie wraz z wynikiem jest rejestrowane.

  • Dzienniki są zbierane tylko dla połączeń Session Manager.

  • Strumień logów jest oddzielny dla każdej sesji w CloudWatch i zawiera czas wykonania polecenia.

  • Dzienniki są rejestrowane w czasie rzeczywistym w CloudWatch.

  • W S3 widzimy osobne pliki dla każdej sesji.

  • Dzienniki są rejestrowane po zakończeniu sesji na S3.

  • W S3 nie mamy informacji o czasie wykonania polecenia, tylko czas rozpoczęcia i zakończenia sesji.

Więcej informacji:

Co musimy zrobić?

  • Ogólne
  1. Utwórz klucz KMS do szyfrowania i ustaw politykę klucza, aby udzielić uprawnień roli IAM, która będzie używana do logowania sesji.
  2. Zaktualizuj politykę IAM, która umożliwia dostęp do kosza S3 i CloudWatch Logs w celu logowania sesji.
  • S3
  1. Utwórz kosz S3 do przechowywania dzienników sesji z szyfrowaniem.
  2. W ustawieniach Session Manager włącz "Wyślij dzienniki sesji do S3" i "Wybierz nazwę kosza z listy". Możesz wymusić szyfrowanie.
  • CloudWatch
  1. Utwórz grupę dzienników CloudWatch do przechowywania dzienników sesji z szyfrowaniem.
  2. Zaktualizuj politykę IAM, która umożliwia dostęp do kosza S3 i CloudWatch Logs w celu logowania sesji i używania klucza KMS.
  3. W ustawieniach Session Manager włącz "Logowanie do CloudWatch", wybierz "Stream session logs" i "Wybierz nazwę grupy dzienników z listy". Możesz wymusić szyfrowanie.

Dodatkowe sposoby konfiguracji preferencji Session Manager:

  • AWS CLI
{
"schemaVersion": "1.0",
"description": "Document to hold regional settings for Session Manager",
"sessionType": "Standard_Stream",
"inputs": {
"s3BucketName": "bucket-s3-logs-sessionmanager",
"s3KeyPrefix": "ec2session",
"s3EncryptionEnabled": true,
"cloudWatchLogGroupName": "EC2Session",
"cloudWatchEncryptionEnabled": true,
"cloudWatchStreamingEnabled": true,
"kmsKeyId": "",
"runAsEnabled": false,
"runAsDefaultUser": "",
"idleSessionTimeout": "",
"maxSessionDuration": "",
"shellProfile": {
"windows": "",
"linux": ""
}
}
}
aws ssm update-document --name "SSM-SessionManagerRunShell" --content "file://SessionManagerRunShell.json" --document-version "\$LATEST"
  • CloudFormation z CustomResources. Przygotowanie funkcji Lambda i uruchomienie jej. (w tym konfiguracja w szablonie